SpringBoot的Webflux

By youfang

SprignWebflux

Spring WebFlux是随Spring 5推出的响应式Web框架。

SpringMvc与SpringWebFlux

1. SpringMvc (同步阻塞)

基于ServletApi

2.SpringWebFlux (异步非阻塞)

  1. Spring WebFlux是基于响应式流的,核心是基于 Reactor 的API 实现的。
  2. 需要支持异步的运行环境,比如Netty和Undertow;也可以运行在支持异步I/O的Servlet 3.1的容器之上

建立在非阻塞的异步I/O和事件驱动的基础之上的。

SpringWebflux 执行过程

SpringWebflux 执行过程和 SpringMVC 相似的

1.SpringWebflux 核心控制器 DispatchHandler,实现接口 WebHandler,WebHandler 有一个方法handle

SpringWebflux 里面 DispatcherHandler,负责请求的处理

  1. HandlerMapping:请求查询到处理的方法

  2. HandlerAdapter:真正负责请求处理

  3. HandlerResultHandler:响应结果处理

异步与同步,阻塞与非阻塞的理解

这里做一个简单的通俗的解释:

1.异步和同步针对调用者,调用者发送请求,如果等着对方回应之后才去做其他事情就是同步,如果发送请求之后不等着对方回应就去做其他事情就是异步

2.阻塞和非阻塞针对被调用者,被调用者接受到请求之后,做完请求任务之后才给出反馈就是阻塞,接受到请求之后马上给出反馈然后再去做事情就是非阻塞

PS:所谓异步非阻塞是针对服务端而言的,是说服务端可以充分利用CPU资源去做更多事情,这与客户端无关,客户端该怎么请求还是怎么请求。)